// site.isscloud.quartz.task.LocationTemperatureStatsTask
package site.isscloud.quartz.task;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import site.isscloud.project.service.IPjStatsLocationTemperatureMinuteService;
import site.isscloud.project.service.IPjStatsLocationTemperatureHourService;
import site.isscloud.project.service.IPjStatsLocationTemperatureDailyService;

/**
 * 空间位置温度统计定时任务
 */
@Component("locationTemperatureStatsTask")
public class LocationTemperatureStatsTask {

    private static final Logger log = LoggerFactory.getLogger(LocationTemperatureStatsTask.class);

    @Autowired
    private IPjStatsLocationTemperatureMinuteService pjStatsLocationTemperatureMinuteService;

    @Autowired
    private IPjStatsLocationTemperatureHourService pjStatsLocationTemperatureHourService;

    @Autowired
    private IPjStatsLocationTemperatureDailyService pjStatsLocationTemperatureDailyService;

    /**
     * 生成空间位置温度分钟统计数据
     *
     * 该方法用于定时执行空间位置温度的分钟级统计任务，调用服务层方法进行实际的数据统计处理。
     * 方法会自动处理时间逻辑，无需传入时间参数。
     *
     * @throws 无异常抛出，所有异常都在方法内部捕获并记录日志
     */
    public void generateMinuteStats() {
        try {
            log.info("开始执行空间位置温度分钟统计任务");

            // 直接调用无参方法，服务层会自动处理时间逻辑
            pjStatsLocationTemperatureMinuteService.generateLocationTemperatureMinuteStats();

            log.info("空间位置温度分钟统计任务执行完成");

        } catch (Exception e) {
            log.error("空间位置温度统分钟计任务执行失败", e);
            // 添加更详细的错误信息
            log.error("错误详情: {}", e.getMessage());
        }
    }

    /**
     * 测试生成空间位置温度小时统计数据
     *
     * 该方法用于测试生成空间位置温度的小时级统计数据。
     *
     * @param statTime 统计时间
     * @throws 无异常抛出，所有异常都在方法内部捕获并记录日志
     */
    public void generateHourStats() {
        try {
            log.info("开始执行空间位置温度小时统计任务");

            // 直接调用无参方法，服务层会自动处理时间逻辑
            pjStatsLocationTemperatureHourService.generateLocationTemperatureHourStats();

            log.info("空间位置温度小时统计任务执行完成");

        } catch (Exception e) {
            log.error("空间位置温度小时统计任务执行失败", e);
            // 添加更详细的错误信息
            log.error("错误详情: {}", e.getMessage());
        }
    }

    /**
     * 测试生成空间位置温度按天统计数据
     *
     * 该方法用于测试生成空间位置温度的按天级统计数据。
     *
     * @param statDate 统计时间
     * @throws 无异常抛出，所有异常都在方法内部捕获并记录日志
     */
    public void generateDailyStats() {
        try {
            log.info("开始执行空间位置温度按天统计任务");

            // 直接调用无参方法，服务层会自动处理时间逻辑
            pjStatsLocationTemperatureDailyService.generateLocationTemperatureDailyStats();

            log.info("空间位置温度按天统计任务执行完成");

        } catch (Exception e) {
            log.error("空间位置温度按天统计任务执行失败", e);
            // 添加更详细的错误信息
            log.error("错误详情: {}", e.getMessage());
        }
    }
}